package com.foreknow.domo11;

public class Master {

    //主人给宠物看病的方法（多态）
    public void cure(Pet pet) {
        if(pet.getHealth()<50) {
            pet.toHospital();
        }
    }

    //主人带不同的宠物玩游戏

    //主人给Penguin看病的方法
    //    public void cure(Penguin penguin) {
    //        if(penguin.getHealth()<40) {
    //            penguin.setHealth(60);
    //            System.out.println("医疗......打针");
    //        }
    //    }
    public void play(Pet pet) {
        if(pet instanceof Dog ) { //如果Dog与Pet有继承关系 返回结果true否则就为false
            Dog dog = (Dog) pet;
            dog.catchFly();
        }else if(pet instanceof Penguin) {
            Penguin penguin = (Penguin) pet;
            penguin.swimming();
        }
    }

    public static void main(String[] args) {
        Master master = new Master();
        //父类的引用指向子类的对象
        //Pet p = new Dog();
        Dog dog = new Dog();
        dog.setHealth(40);
        master.cure(dog);
        master.play(dog);

        //p = new Penguin();
        Penguin penguin = new Penguin();
        penguin.setHealth(20);
        master.cure(penguin);
        master.play(penguin);

        //        Dog dog = new Dog();
        //        dog.setHealth(40);
        //        master.cure(dog);
        //
        //        Penguin penguin = new Penguin();
        //        penguin.setHealth(20);
        //        master.cure(penguin);

        System.out.println("-----------------------------类型转换----------------------");
        //        int  a = 12; //小类型
        //        double d = a;// 自动类型转换
        //        float f = (float) 3.14;
        //
        //        Dog dd = new Dog(); //子类型
        //        Pet p = dd; // 向上造型(自动类型转换)
        //
        //
        //        Penguin penguin1 = (Penguin) p; //向下造型(强制类型转换)
        System.out.println("-----------------------------类型转换----------------------");



    }

}
